from django.shortcuts import render
from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework_extensions.cache.mixins import CacheResponseMixin

from .models import Area
from .serializers import AreaSerializer, SubAreaSerializer


# Create your views here.


class AreasViewSet(CacheResponseMixin, ReadOnlyModelViewSet):
    """行政区划分视图集"""

    pagination_class = None  # 禁止分页

    def get_queryset(self):
        """
        重写此方法，对不同的action提供不同的查询集
        :return:
        """
        if self.action == 'list':
            return Area.objects.filter(parent=None)  # 如果是list，则是请求顶级数据列表 --> 注意：此处需要使用filter进行查询得到查询集，不能使用get得到单一的对象
        else:
            return Area.objects.all()  # 如果不是list，则是请求下级数据列表

    def get_serializer_class(self):
        """
        重写次方法，对不同的action提供不同的序列化器
        :return:
        """
        if self.action == 'list':
            return AreaSerializer  # 如果是list，则使用省级数据序列化器
        else:
            return SubAreaSerializer  # 如果不是list，则使用下级区县数据序列化器
